var letterCombinations = function (digits) {
    let res = [];
    // 如果传入的是空字符串的话
    if (!digits.length) return res;
    // 每个数字到字母的映射
    let mapping = [
      "",
      "",
      "abc",
      "def",
      "ghi",
      "jkl",
      "mno",
      "pqrs",
      "tuv",
      "wxyz",
    ];
    // 回溯算法主函数
    const backtrack = (start, sb) => {
      if (sb.length == digits.length) {
        // 到达回溯树底部
        return res.push(sb);
      }
      for (let i = start; i < digits.length; i++) {
        let digit = digits[i].charCodeAt() - "0".charCodeAt();
        let arr = mapping[digit].split("");
        for (let c of arr) {
          // 做选择
          sb += c;
          backtrack(i + 1, sb);
          // 撤消选择
          sb = sb.substring(0, sb.length - 1);
        }
      }
    };
    // 从 digits[0] 开始进行回溯
    backtrack(0, "");
    return res;
  };
  